home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / gnu / fpu881 / src6.zoo / cexp.s < prev    next >
Text File  |  1991-09-24  |  2KB  |  67 lines

  1. # double precision floating point stuff for Atari-gcc using the SFP004
  2. # developed with gas
  3. #
  4. # double precision complex exponential function
  5. #
  6. # M. Ritzert (mjr at dmzrzu71)
  7. #
  8. # 12.10.1990
  9. #
  10. # addresses of the 68881 data port. This choice is fastest when much data is
  11. # transferred between the two processors.
  12.  
  13. comm =     -6
  14. resp =    -16
  15. zahl =      0
  16.  
  17. # waiting loop ...
  18. #
  19. # wait:
  20. # ww:    cmpiw    #0x8900,a1@(resp)
  21. #     beq    ww
  22. # is coded directly by
  23. #    .long    0x0c688900, 0xfff067f8
  24. # and
  25. # www:    tst.b    a1@(resp)
  26. #    bmi.b    www
  27. # is coded by
  28. #    .word    0x4a68,0xfff0,0x6bfa        | test
  29.  
  30.     .text; .even
  31.     .globl _cexp
  32. _cexp:
  33.     movel    a1,d0                | save a1 as return value
  34.     lea    0xfffa50,a0            | fpu address
  35.     movew    #0x5410,a0@(comm)        | exp()
  36.     cmpiw    #0x8900,a0@(resp)        | check
  37.     movel    a7@(4),a0@            | load arg_hi
  38.     movel    a7@(8),a0@            | load arg_low
  39.  
  40. #    movew    #%0101 0101 0011 0001,a0@(comm)    | sincos: sin -> fp2
  41.     movew    #0x5531,a0@(comm)    | sincos: sin -> fp2
  42.     .long    0x0c688900, 0xfff067f8
  43.     movel    a7@(12),a0@            | load arg_hi
  44.     movel    a7@(16),a0@            | load arg_low
  45.  
  46. #    movew    #%0000 0000 1010 0011,a0@(comm)    | mul fp0 -> fp1
  47.     movew    #0x00a3,a0@(comm)        | mul fp0 -> fp1
  48.     .word    0x4a68,0xfff0,0x6bfa        | test
  49.  
  50. #    movew    #%0000 0001 0010 0011,a0@(comm)    | mul fp0 -> fp2
  51.     movew    #0x0123,a0@(comm)        | mul fp0 -> fp2
  52.     .word    0x4a68,0xfff0,0x6bfa        | test
  53.  
  54. #    movew    #%0111 0100 1000 0000,a0@(comm)    | fetch fp1
  55.     movew    #0x7480,a0@(comm)        |
  56.     .long    0x0c688900, 0xfff067f8
  57.     movel    a0@(zahl),a1@+
  58.     movel    a0@(zahl),a1@+
  59.  
  60. #    movew    #%0111 0101 0000 0000,a0@(comm)    | fetch fp2
  61.     movew    #0x7500,a0@(comm)        | 
  62.     .long    0x0c688900, 0xfff067f8
  63.     movel    a0@(zahl),a1@+
  64.     movel    a0@(zahl),a1@+
  65.  
  66.     rts
  67.